/*! \file IrDeviceList.h Holds the functionality that enumerates the MceIr hardware. */
#ifndef __IR_DEVICE_LIST_H_INCLUDED__
#define __IR_DEVICE_LIST_H_INCLUDED__

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <setupapi.h>
#include <vector>
#include <string>
#include "ILogger.h"

/*! This class enumerates the MceIr hardware. */
class IrDeviceList 
{
public:
	typedef std::vector<std::string> StringList;

	IrDeviceList(ILoggerPtr logger);
	/*! returns a list of filenames for the IR driver hardware */
	StringList & get();

protected:
	void MceIrOpenUsbDevice(LPGUID  pGuid );
	void MceIrOpenOneDevice(HDEVINFO HardwareDeviceInfo, PSP_DEVICE_INTERFACE_DATA DeviceInterfaceData);

	ILoggerPtr m_Logger;
	StringList m_List;
};

#endif